package com.hedl.practice.diyJava.io.study_files.test;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.util.List;

public class Main {
    public static void main(String[] args) throws IOException {
        byte[] data = Files.readAllBytes(Path.of("/Users/a101/idea/like.txt"));
        byte[] data1 = Files.readAllBytes(Path.of("/Users/a101/idea/人应该懂得放弃.txt"));
        for (byte datum : data) {
            //遍历输出
            //System.out.print((char) datum);
        }
        //指定编码格式输出
        /*String s = new String(data1, StandardCharsets.UTF_8);
        System.out.print(s);*/


        System.out.println("==================================================================");
        //直接使用字符串的模式输出，同时也可以指定编码格式
        String content1 = Files.readString(Path.of("/Users/a101/idea/人应该懂得放弃.txt"));
        String content2 = Files.readString(Path.of("/Users/a101/idea/人应该懂得放弃.txt"),StandardCharsets.UTF_8);
        /*System.out.println(content1);
        System.out.println(content2);*/


        /**
         * 写入文件也非常方便：
         */
        /*byte[] data2 = {65,66,67};
        String a = "java，你好我要什么时候才可以学会你呀！";
        List<String> list = List.of("加油！","你是可以的！","不管前方有多难！","做自己喜欢的事情吧！","不管别人说什么;");
        // 写入二进制文件:
        Files.write(Path.of("/Users/a101/idea/like.txt"),data2);
        // 写入文本并指定编码:
        Files.writeString(Path.of("/Users/a101/idea/java.txt"),a,StandardCharsets.UTF_8);
        // 按行写入文本:
        Files.write(Path.of("/Users/a101/idea/Hello.txt"),list);*/

        //实现复制粘贴的功能
        //Files.writeString(Path.of("/Users/a101/idea/tmp1.txt"),Files.readString(Path.of("/Users/a101/idea/人应该懂得放弃.txt"),StandardCharsets.UTF_8),StandardCharsets.UTF_8);

        //简写，也可以实现上面的功能
        //Files.writeString(Path.of("/Users/a101/idea/tmp1.txt"),content1,StandardCharsets.UTF_8);

        Path sourcePath = Paths.get("/Users/a101/idea/Hello.txt");
        Path destPath = Paths.get("/Users/a101/idea/tmp1.txt");
        try{
            /**
             * 报错"FileAlreadyExistsException"是因为粘贴文件已存在，所以报错；
             *  解决方法一：  Files.copy(sourcePath,destPath,StandardCopyOption.REPLACE_EXISTING);      替换现有的文件内容；
             *  解决方法二：  Files.delete(destPath);     在使用copy()方法之前，删除现有的复制目录的目标文件，然后在使用copy方法后会给我在指定路径在创建一个文件，把源文件复制进去；
             */
            Files.delete(destPath);
            Files.copy(sourcePath,destPath);
        }catch (IOException e){
            e.printStackTrace();
        }
    }
}
